import { request } from '../../request'
import { uuid } from '@/utils'

/** 默认系统角色 */
export const defaultRole: ApiModels.base.ApplicationRole = {
  id: uuid.new(),
  name: undefined,
  description: '',
}

/**
 * 获取系统角色分页列表
 * @param params - 查询参数
 */
export function fetchRoleList(params?: ApiModels.IBaseQueryParams) {
  return request.get<ApiModels.PageList<ApiModels.base.ApplicationRole>>('/base/Roles/list', {
    params,
  })
}

/**
 * 获取系统角色详情
 * @param id - 系统角色id
 */
export function fetchRoleDetail(id: string) {
  return request.get<ApiModels.base.ApplicationRole>(`/base/Roles/get/${id}`)
}

/**
 * 新增系统角色
 * @param data - 系统角色模型
 */
export function createRole(data: ApiModels.base.ApplicationRole) {
  return request.post<ApiModels.base.ApplicationRole>('/base/Roles/create', data)
}

/**
 * 更新系统角色
 * @param data - 系统角色模型
 */
export function updateRole(data: ApiModels.base.ApplicationRole) {
  return request.put<ApiModels.base.ApplicationRole>('/base/Roles/update', data)
}

/**
 * 删除系统角色
 * @param id - 系统角色id
 */
export function deleteRole(id: string) {
  return request.delete<ApiModels.base.ApplicationRole>(`/base/Roles/delete/${id}`)
}

/**
 * 删除系统角色
 * @param name - 系统角色名称
 */
export function deleteRoleByName(name: string) {
  return request.delete<ApiModels.base.ApplicationRole>(`/base/Roles/deleteByName/${name}`)
}

/**
 * 删除系统角色
 * @param name - 系统角色名称
 */
export function syncRoleRightsToUsers(name: string) {
  return request.post<ApiModels.base.ApplicationRole>(`/base/Roles/syncRightsToUsers?name=${name}`)
}
